
class Integer {
    constructor(value){
        this.value = value ;
    }
    addition(addend){
        // this.value = this.value + addend;
        this.value += addend;
        // 为了支持链式调用，方法执行后返回了当前实例(this)
        return this;
    }
    subtract(minuend){
        this.value -= minuend;
        return this; 
    }
    multiply(multiplier){
        this.value *= multiplier;
        return this;
    }
    divide(divisor){
        this.value /= divisor;
        return this;
    }
    // 重写从 Object 集成的 valueOf 方法
    valueOf(){
        return this.value;
    }
}

// 实现链式调用:
let x = new Integer(5);
let r = x.addition(1).subtract(3).multiply(4).divide(5);
console.log( r , typeof r );
let p = r.valueOf();
console.log( p , typeof p );

// 任务
// 类似地，我们应该如何通过 Promise 实现如下链式调用？
// x.addition(1).subtract(3).multiply(4).divide(5);